紐づいたモデルのデータをフィルタリングして取得する
class TestController < ApplicationController def index @companys = Company.includes(:employees).where(id: 1,employees: { id: 1..10, name: 'test' }) end end
紐づいたデータをフィルタリングしてから取得するには、
の形式で記入します。
上の例では、idが1のCompanyモデルとそれに紐づいていてidが1~10でnameがtestのEmployeeモデルのデータを取得しています。
1..10は1から10という意味になります。
実用時は、
のように紐づいたモデルのフィルタリングを変数に入れておいた方が見やすくなると思います。
モデル.includes(:紐づけるモデル).where(紐づけるモデル: {条件})
の形式で記入します。
上の例では、idが1のCompanyモデルとそれに紐づいていてidが1~10でnameがtestのEmployeeモデルのデータを取得しています。
1..10は1から10という意味になります。
実用時は、
employees_filter = { id: 1..1, name: 'test' }
@companys = Company.includes(:employees).where(id: 7,employees: employees_filter)
@companys = Company.includes(:employees).where(id: 7,employees: employees_filter)
のように紐づいたモデルのフィルタリングを変数に入れておいた方が見やすくなると思います。